• 検索結果がありません。

ArcGIS Pro SDK for .NET スタートアップ ガイド 一覧 | ESRIジャパン

N/A
N/A
Protected

Academic year: 2018

シェア "ArcGIS Pro SDK for .NET スタートアップ ガイド 一覧 | ESRIジャパン"

Copied!
107
0
0

読み込み中.... (全文を見る)

全文

(1)

1

(2)

2

目次

利用製品 ... 1

アイコンの説明 ... 1

第 1 章 イントロダクション ... 3

ArcGIS Pro SDK とは ... 5

演習 1A: 環境設定 ... 7

ArcGIS Pro のインストール ... 7

ArcGIS Pro SDK for .NET のインストール ... 7

演習 1B: データの準備と事前処理 ... 9

データ保存先フォルダーの作成 ... 9

全国市区町村界データのダウンロード ... 9

ArcGIS Pro の起動とサイン イン ... 11

マップの追加とプロジェクトのオプション設定 ... 14

ファイル ジオデータベースにデータを変換 ... 16

第 2 章 ArcGIS Pro SDK の 基本操作 ... 21

DAML の基本 ... 23

演習 2A: DAML の操作方法 ... 27

アドイン モジュールのプロジェクト作成 ... 27

リボンをカスタマイズ... 31

コマンドを追加 ... 32

動作のテスト ... 34

マップ タブの修正 ... 35

コンディションとステートの作成 ... 36

コンディションとステートを使用した表示の切り替え ... 39

演習のまとめ... 40

解答コード ... 41

演習 2B: フック アドイン コマンドの作成 ... 44

リボンの作成 ... 44

フック アドイン ボタンの作成 ... 45

ArcGIS Pro のアドインのアンインストール ... 51

演習のまとめ... 52

解答コード ... 53

第 3 章 テンプレートを使用 したアドインの作成 ... 55

ArcGIS Pro SDK for .NET のテンプレート ... 57

演習 3A: プロジェクト マップ アイテム数とフィーチャ レイヤー数の取得 ... 59

プロジェクト アイテム数を取得 ... 59

(3)

3

プロジェクトにデータベースを追加 ... 65

演習のまとめ... 68

解答コード ... 69

演習 3B: プロジェクトアイテムのコンテキストメニューの修正 ... 71

コンテキスト メニューにボタンを移動 ... 71

コンテキスト メニュー項目の追加 ... 73

演習のまとめ... 79

解答コード ... 80

第 4 章 マップ ビューとの 対話 ... 83

マップ ツール ... 85

演習 4: カスタム マップ ツールの作成 ... 87

カスタム マップ ツールの作成 ... 87

プロジェクトにデータベースを追加 ... 91

フィーチャ数のカウントとズーム ... 92

演習のまとめ... 94

解答コード ... 96

第 5 章 補足資料 ... 99

Web サイト ...101

(4)
(5)

1

はじめに

このガイドは、ArcGIS Pro SDK を使用して、ArcGIS Pro アプリケーションの拡張方法を学

ぶためのチュートリアルです。ArcGIS Pro でどのような開発が行えるかを演習形式で理解して

いただけます。

利用製品

このガイドを利用するには、下記の製品をお持ちである必要があります。

ArcGIS Pro 2.0 以上 (Basic、Standard、Advanced のいずれでも動作) Visual Studio 2015 もしくは Visual Studio 2017

(Professional、Enterprise、Community エディション)

※本ドキュメントは Visual Studio 2015 を使用して操作しています。

アイコンの説明

演習時間:演習時間の目安です。

ノート:特定のトピック、手順に関する追加の情報、例外事項や特記事項を示します。

ティップス:概念の理解や手順を実行するための簡単なヘルプです。

外部リソース:トピックに関する参考資料です。

ベスト プラクティス:目的や優先事項を効率よく達成するためのガイドラインです。

(6)
(7)

3

(8)
(9)

5

ArcGIS Pro SDK

とは

ArcGIS Pro SDK は、ArcGIS Pro デスクトップ アプリケーションをカスタマイズするため

のソフトフェア開発キット (Software Development Kit) です。ArcGIS Pro で使用可能な UI を独自にアドインとして作成し、データの解析や編集を行うことができます。

ArcGIS Pro SDK は、モジュール、XML ベースの設定ファイル、テンプレートを追加したと

きに作成されるコード ファイルの 3 つのコンテンツによって構成されます。作成したアドイ

ンは .esriAddinX という拡張子のついたファイルにパッケージ化されるため、ユーザー間で簡

単に共有できます。

ArcGIS Pro SDK で提供される API は、ArcGIS for Desktop や ArcGIS Engine の開発で使用

する ArcObjects とは異なるため、既存のコードを ArcGIS Pro SDK で利用することはできませ

ん。また、スタンドアロン アプリケーションの作成はサポートされていません。

ArcGIS Pro SDK

とは

ArcGIS Pro

アプリケーションの拡張アドインを作成する

ためのソフトウェア開発キット

.NET

C#

VB

)を使用

WPF

XAML

UI

を作成

Visual Studio

のプロジェクト テンプレート ウィザードを使用

- 作成したアドインは、

.esriAddinX

ファイルにパッケージ化

以下のコンテンツで構成

- 設定ファイル(

Config.daml

(10)

6

スタートアップ ガイドでは、ArcGIS Pro 2.0 SDK を使用しアドインを作成していきます。2.0 以

前でアドインを作成し、ArcGIS Pro 2.0 でアドインを実行する場合、アドインの構成の変更と再

コンパイルが必要となります。手順につきましては、下記 FAQ をご参考ください。

・ArcGIS Pro SDK: バージョン 2.0 への移行ガイド

https://esrij-esri-support.custhelp.com/app/answers/detail/a_id/7168

・ArcGIS Pro SDK : バージョン 2.0 への移行方法

(11)

7

演習

1A:

環境設定

ArcGIS Pro SDK for .NET を利用するには、事前に実行環境である ArcGIS Pro がインスト

ールされている必要があります。事前準備として、ArcGIS Pro のインストール、そして ArcGIS Pro SDK for .NET のをインストールします。

演習時間: 10 分

ArcGIS Pro

のインストール

ArcGIS Pro のソフトウェア インストール要件については、下記 URL を参照してください。

ArcGIS Pro 2.0のシステム要件

http://pro.arcgis.com/ja/pro-app/get-started/arcgis-pro-system-requirements.htm

ソフトウェアのダウンロードとインストール方法は、下記 URL を参照してください。

ArcGIS Pro 2.0

https://esrij-esri-support.custhelp.com/app/answers/detail/a_id/7124

ArcGIS Pro をインストールするには、Esri 製品サポート サイトにアクセスし、ログインする必要

が あ り ま す 。 ア カ ウ ン ト を お 持 ち で な い 場 合 は 、Esri 製 品 サ ポ ー ト ト ッ プ ペ ー ジ (https://www.esrij.com/support/esri/) を参照してください。

ArcGIS Pro SDK for .NET

のインストール

ArcGIS Pro SDK for .NET のソフトウェア インストールのシステム要件については、下記 URL を参照してください。

ArcGIS Pro 2.0 SDK for .NET 要件

https://www.esrij.com/products/arcgis-desktop/environments/arcgis-pro/

ソフトウェアのインストール手順は、下記 URL の「任意インストール プログラム」項目の

「ArcGIS Pro SDK for .NET」を参照してください。

ArcGIS Pro SDK for .NET インストールガイド (v2.0)

(12)

8

Visual Studio 2015 では、ArcGIS Pro SDK の自動更新がデフォルトでオンとなっています。 ArcGIS Pro と ArcGIS Pro SDK のバージョンが異なると、アドインのビルドにてエラーが発生し

てしまいます。そのため、自動更新をオフにすることを推奨いたします。Visual Studio で、[ツー

ル] メニュー → [オプション] → [環境] → [拡張機能と更新プログラム] から [拡張機能を自動

的に更新する] のチェックを外し、[OK]をクリックすることで、自動更新をオフに設定することが

可能です。

(13)

9

演習

1B:

データの準備と事前処理

この演習では、本ガイドの演習で使用するデータをダウンロードし、実行可能な形式に編集し ます。

演習時間: 20 分

データ保存先フォルダーの作成

このステップでは、演習で使用するデータの保存先フォルダーを作成します。

 C:\ に「ProSdkStartUpGuide」フォルダーを作成します。

 さらに「C:\ProSdkStartupGuide」フォルダー内に、下記のフォルダーを作成します。

 Downloads  Mapx  ProAddins  Projects

この演習のためにダウンロードしたデータは、「Downloads」フォルダーに保存しましょう。

また、このガイドではダウンロードしたデータをファイル ジオデータベースのフィーチャクラ スに変換して演習を行います。

全国市区町村界データのダウンロード

ESRI ジャパンの Web サイトからサンプル データとして提供している、全国市区町村界デ

ータをダウンロードします。このデータは、演習 3 と演習 4 で使用します。

 Web ブラウザーを開き、下記 URL にアクセスします。

ESRIジャパン 全国市区町村界データ

(14)

10

 [ファイルのダウンロード] をクリックし、内容を確認してから [同意する] にチェックを

入れ、[全国市区町村界データのダウンロード] をクリックします。

 [名前を付けて保存] を選択し、「C:\ProSdkStartupGuide\Downloads」フォルダーに、

「japan_ver81.zip」と名前を付けて保存してください。

 Windows エクスプローラーを開き、ダウンロードしたファイルが保存されたディレクトリ

の「C:\ProSdkStartupGuide\Downloads」に移動します。

 「japan_ver81.zip」をで右クリックし、[すべて展開] をクリックします。

 [圧縮 (ZIP 形式) フォルダーの展開] ダイアログが表示されたら、[完了時に展開されたフ

(15)

11  展開されているのを確認し、Windows エクスプローラーを閉じます。

ArcGIS Pro

の起動とサイン

イン

ArcGIS Pro を利用するためには、ArcGIS Online の組織向けアカウントで ArcGIS Online

にサイン インする必要があります。ArcGIS Online にサイン インすることで、ArcGIS Online

上のマイ コンテンツや組織内のコンテンツ、または世界中に公開されているコンテンツにアク セスできるようになります。データの公開や共有にも ArcGIS Online へのサイン インが必要

となります。

 ArcGIS Pro を起動します。

Windows [スタート] メニュー → [すべてのプログラム] → [ArcGIS] → [ArcGIS Pro]

→ [ArcGIS Pro]

 ArcGIS Oline へのサイン インをしていない場合、[ArcGIS サイン イン] ウィンドウが表

(16)

12

すでに ArcGIS Online にサイン インをしている場合は、ArcGIS Pro の右上に ArcGIS Online

のユーザー名が表示されます。

 [新しいプロジェクトの作成] から [空のプロジェクト] テンプレートを選択します。

 「C:\ProSdkStartupGuide\Projects」フォルダー内に、「ExerciseData」という名前でプ

ロジェクトを保存します。

何もレイヤーを含まない、新しいプロジェクトが開きます。空のプロジェクトを開くのは、

ArcMap 上で空のドキュメントを開くのに似ていますが、事前に名前をつけてプロジェクトを

保存する点が異なります。ArcMap とのインターフェイスの違いを確認してください。ArcGIS Pro では、ツールバーやメニューではなく Microsoft Office 製品で見られるようリボン イン

(17)

13

新しいプロジェクトを作成すると、プロジェクトに関連するファイルやデータを格納するた めのフォルダーが自動的に作成されます。

次に、プロジェクトのフォルダーを確認します。

 Windows のエクスプローラーにて、「C:\ProSdkStartupGuide\Projects」フォルダーを

開きます。

「ExerciseData」プロジェクトを作成すると同時に、「ExerciseData」フォルダーが作成され

ます。

プロジェクト フォルダー配下には、以下のファイルやフォルダーが自動的に作成されます。

(18)

14

プロジェクトで扱うデータは、この <プロジェクト名>.gdb ジオデータベースに保存するこ

ともできますし、別の既存のジオデータベースに格納することもできます。

 Windows エクスプローラーを閉じます。

マップの追加とプロジェクトのオプション設定

空のプロジェクトには、何もマップが追加されていません。まずはマップを追加しましょう。

 リボン インターフェイスの [挿入] タブを選択し、[新しいマップ] のアイコンをクリック

するか、またはドロップダウンから [新しいマップ] を選択し、プロジェクトにマップを挿

入します。

(19)

15

画面左側の [コンテンツ] ウィンドウで、マップという名前で追加されたツリーが 1 つの独

立したマップを表します。ArcGIS Pro では、このマップの中に複数のレイヤーを格納していく

ことができます(ArcMap のデータ フレームと似ています)。また、1 つのプロジェクトの中

に複数のマップを作成することもできます。

新しいプロジェクトの作成で、[Map.aptx] テンプレートを選択すると、最初から背景地図が挿入

されているプロジェクトを開くことができます。

続いて、プロジェクトのオプション設定を行います。ArcMap では、マップについてのプロパ

ティ設定(選択色やメタデータの形式など)を [ArcMap オプション] から行っていました。 ArcGIS Pro では、マップ単位ではなくプロジェクト単位でプロパティを設定します。

 [プロジェクト] タブ から [オプション] を選択します。

 [現在の設定] の [デフォルト ジオデータベース] に、ステップ 3 で作成されたプロジェ

(20)

16

デフォルト ジオデータベースを変更する場合は、[プロジェクト] の [現在の設定] のデフォルト

ジオデータベースを設定してください。[アプリケーション] の [一般] から設定してしまうと、今

後作成するすべてのプロジェクトに設定が適用されてしまいます。

次に、ジオプロセシング ツールが、既存のデータセットを上書きするように設定されている ことを確認します。

 [ジオプロセシング] に移動し、[ジオプロセシング ツールが既存のデータセットを上書き

することを許可] にチェックが入っていることを確認します。

 [OK] をクリックし、画面左上の ボタンでマップに戻ります。

これでプロジェクトの基本的な設定ができました。続いて、ダウンロードしたシェープファイ ルのデータを、ファイル ジオデータベースのフィーチャクラスに変換します。

ファイル

ジオデータベースにデータを変換

ステップ 2 でダウンロードした「japan_ver81.shp」を、ファイル ジオデータベースのフ

ィーチャクラスに変換します。

シェープファイルは仕様がオープンになっており、ArcGIS 以外のソフトウェアでも読み書き

ができるなど、GIS データをファイルとして公開する場合には便利なものです。しかし、基本

設計が古く、大量のデータやネットワーク データセットのように、複雑なデータ モデルを必要 とする要件には対応できません。また、格納可能な文字数など制限も多く、必ずしも最適なフォ ーマットとは言えません。

ファイル ジオデータベースは、シェープファイルの欠点を補う、ArcGIS ネイティブのデー

タ形式です。ArcGIS Pro では、デフォルト ジオデータベースとしてあらかじめプロジェクト

(21)

17

ェープファイルのデータをファイル ジオデータベースのフィーチャクラスとしてインポートし、 使用することにします。

 [カタログ] ウィンドウの [データベース] を展開し、「ExerciseData.gdb」があることを

確認します。

 [解析] タブの [ツール] をクリックします。

 [ジオプロセシング] ウィンドウが表示されたら、[ツールの検索] に「フィーチャクラス」

と入力し、ツールを検索します。

(22)

18

 [フィーチャクラス → フィーチャクラス] ダイアログで以下の設定を行い、[実行] をクリ

ックします。

 入力フィーチャ :

C:\ProSdkStartupGuide\Downloads\japan_ver81\japan_ver81.shp  出力場所 : ExerciseData.gdb (既定値)

 出力フィーチャクラス : japan_ver81

操作が完了すると、「ExerciseData.gdb」内に「japan_ver81」フィーチャクラスが作成され

ます。また、マップ上および [コンテンツ] ウィンドウに「japan_ver81」データがレイヤーと

(23)

19  左上のクイック アクセス ツールバーの [保存] をクリックし、プロジェクトを保存します。

 ArcGIS Pro を終了します。

(24)
(25)

21

2

ArcGIS Pro SDK

(26)
(27)

23

DAML

の基本

DAML とは ArcGIS Pro Desktop Application Markup Language の略で、XML 構文を使

い、ArcGIS Pro の UI を定義します。また、モジュールの変更や削除もできます。

DAML

を使用して

UI

をカスタマイズ

設定ファイル(

Config.daml

XML

構文を使用

ArcGIS Pro

UI

を定義

(28)

24

ArcGIS Pro の UI を定義する際に呼び出すルート図です。上記のスライドの図は、演習で使

用する DAML の要素のみを書き出したものです。

演習で使用する DAML 要素 説明

AddInInfo プロジェクトに関する基本情報を定義

conditions 特定の要素と特定の状況の側面を結びつける 条件と実行を定義

modules タブやボタンなどの変更や削除を定義

ArcGIS 要素のルート図の詳細は、下記 URL をご参照ください。

ArcGIS Element

https://pro.arcgis.com/en/pro-app/sdk/api-reference/index.html#topic13494.html

(29)

25

演習で使用するコードファイルの説明:

コンディションとステート

コーディングを単純化。 (例:ボタンは [example_state_condition] が満たされたときに

のみ有効になる)

コンディション DAML で宣言し、特定の要素とステートを結びつける条件を

作り、実行するために使用します。not、and、or を使い、

複雑な条件を作成できる。

ステート アプリケーションの状態に名前を付けたもので、特定の状況の 側面をコードでアクティブにするか、非アクティブにするかの 切り替えができる。

フック コマンド

任 意 の ArcGIS Pro コ ン ト ロ ー ル を ICommand で 取 得 し 、Framework の GetPluginWrapper() メソッドを用いたアドインを使用。

コードファイル

コンディションとステート

(30)
(31)

27

演習

2A:

DAML

の操作方法

この演習では、DAML を使用し、ArcGIS Pro 既存の要素や新規に作成した要素をカスタマイ

ズします。

演習時間: 40 分

演習のポイント :

新しい要素の追加 (タブ、グループ、ボタン) リボンのカスタマイズ

コンディションとステートの使用.

アドイン

モジュールのプロジェクト作成

 Visual studio 2015 を起動します。

 [ファイル] メニュー → [新規作成] → [プロジェクト] をクリックします。

 [新しいプロジェクト] ダイアログから、[インストール済み] → [テンプレート] → [Visual C#] → [ArcGIS] → [ArcGIS Pro Add-ins] を選択し、[ArcGIS Pro モジュール

アドイン] テンプレートを選択します。

 下記の項目を設定し [OK] ボタンをクリックしてプロジェクトを新規に作成します。

 .NET Framework のバージョン : .NET Framework 4.6.1  名前 : WorkingWithDAML

 場所 : C:\ProSdkStartupGuide\ProAddins\  ソリューションのディレクトリを作成 : チェックを外す

[ソリューションのディレクトリを作成] チェック ボックスをオンにすると、選択したディレクト

(32)

28

新規プロジェクトが作成されます。プロジェクトの起動時に、「Config.daml」ファイルが開

きます。アドイン モジュールのコードは、「Module1.cs」ファイルに含まれています。

まずは、「Module1.cs」ファイルにあらかじめ用意されているコードを確認しておきましょう。

 [ソリューション エクスプローラー] から [Module1.cs] をクリックして開きます。

internal class Module1 : Module {

private static Module1 _this = null; /// <summary>

/// Retrieve the singleton instance to this module here /// </summary>

public static Module1 Current {

get {

return _this ?? (_this = (Module1)

FrameworkApplication.FindModule("WorkingWithDAML_Module")); }

} }

Module1 クラスには、シングルトンである自身のインスタンスを参照するプライベート変数

(_this)、およびその参照を取得するための get アクセサーを含む静的プロパティ(Current)

が用意されています。

Current プロパティの get アクセサーでは、FrameworkApplication の FindModule メソ

ッドの引数「WorkingWithDAML_Module」という文字列を渡し、モジュールのインスタンスを

取得しています。この文字列は "WorkingWithDAML" というプロジェクト名から自動生成され

(33)

29

また、このクラスは ArcGIS Pro SDK に含まれる Module 抽象クラスを継承しており、デ

フォルトで [Module1] という名前が設定されています。名前空間は、新規プロジェクト ダイ

アログで入力した「WorkingWithDAML」です。今回は「Module1.cs」ファイルには何も変更

を加えませんが、アドインでアプリケーションからのイベントを取得して独自の処理を行ない たい場合などは、Module 抽象クラスから継承した様々なイベント ハンドラーをオーバーライ

ドして実装できます。

次に、「Config.daml」ファイルを見てみましょう。

 [ソリューション エクスプローラー] から [Config.daml] をクリックして開きます。

insertModule タグには、ID 属性として「WorkingWithDAML_Module」が付与されており、

「Module1.cs」ファイル内で FindModule メソッドに渡している ID と一致します。また、 className 属性にはモジュールのクラス名である [Module1] が指定されています。

<modules>

<insertModule id="WorkingWithDAML_Module" className="Module1"

autoLoad="false" caption="Module1"> ・・・

</insertModule> </modules>

次に、今後のコーディングをやり易くするためのファイルを作成します。

 [ソリューション エクスプローラー] から [WorkingWithDAML] プロジェクトを右クリ

ックし、[ArcGIS Pro の DAML ID を生成] を選択します。

(34)

30

このファイルの作成は必須ではありませんが、ArcGIS Pro に元々用意されている各コマンド (ボタン、ドッキング ウィンドウ、ツールなど) の文字列を、静的な文字列プロパティとして定

義したものです。これにより、手動で文字列の ID を入力する必要なく Visual Studio の入力

支援機能であるインテリセンスの機能を使用し、既存のコマンドにアクセスするコードが記述 できます。

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

[エラー一覧] で表示されている[必要な属性 ’keytip’ が見つかりません。] の警告は、キーヒント

属性を入力していないために表示されるものです。キーヒントは、リボン上にオーバーレイとして 表示されるキーボードのヒントで、表示されるキーを押すとプログラムの機能にアクセスすること ができます。Alt キーを押すと、ヒントと関連付けられたコマンドを実行できるキーボード文字が

表示されます。キーヒントは必須パラメーターですが、必要としない場合はこの警告は無視をして も構いません。キーヒント属性に空の値を入れると警告は消えます。

エラーが発生する場合は、ArcGIS Pro SDK for .NET が正しくインストールされているか確認し

(35)

31

リボンをカスタマイズ

このステップではリボンのカスタマイズとして、1 つのタブに 2 つのグループを作成し、追

加します。

「タブ」は、[マップ] や [挿入] など、リボン上で切り替える対象のメニューを指し、「グループ」

とは、それぞれのタブに含まれるツールやコマンドをまとめたものです。各タブは 1 つ以上のグル

ープを含みます。

 「Config.daml」ファイルを開き、tabs 要素を探します。insertModule 要素内の、1 番目

の子要素です。

tabs 要素には、あらかじめ tab 要素が 1 つ、コメントアウトされた状態で用意されていま

す。tab には子要素として 1 つ以上の group を設定します。各グループにどのようなツール

やコマンドを含めるかは、別途 groups 要素内の group 要素で定義するため、ここでは refID

属性で group 要素への参照のみを指定します。

 tab 要素のコメントを解除し、caption 属性を「演習 2A タブ」に変更します。

<tabs>

<tab id="WorkingWithDAML_Tab1" caption="演習 2A タブ">

<group refID="WorkingWithDAML_Group1"/> </tab>

</tabs>

複数行をコメント アウトする場合、[テキスト エディター] ツールバーの [選択範囲のコメント

を解除] ボタンをクリック、または Ctrl キーを押しながら 'K' と 'C' を押すと簡単で便利です。

 続けて groups 要素内の group 要素へ移動し、下記のように変更します(group の id が、

先ほど tab 要素内で参照していた group の refID と一致していることに注目してくだ

さい)。また、前のステップで group 要素を配置する指定のタブを作成したので、group

要素内の appearsOnAddInTab の値は false に設定します。  caption : 演習 2A グループ 1  appearsOnAddInTab : false

<groups>

<!-- comment this out if you have no controls on the Addin tab

to avoid an empty group--> <group id=”WorkingWithDAML_Group1” caption=”演習 2A グループ 1”

appearsOnAddInTab="false"> <!--host controls within groups -->

(36)

32

appearsOnAddInTab の値を true で定義することによって、リボン内に [アドイン] タブが自動

に作成され、グループが配置されます。

 さらに、前のコードに続けて、「WorkingWithDAML_Group2」グループを作成します。 groups 要素内で、「WorkingWithDAML_Group1」グループをコピー&ペーストで複製し、 id および caption の値を書き換えます。

 id : WorkingWithDAML_Group2  caption : 演習 2A グループ 2

<group id="WorkingWithDAML_Group2" caption="演習 2A グループ 2"

appearsOnAddInTab="false"> </group>

これで、タブ内に設定できるグループが 2 つになりました。

次に、再度「演習 2A タブ」タブを修正し、2 つ目のグループ「演習 2A グループ 2」を追

加しましょう。

 tab 要素内に、「WorkingWithDAML_Group2」グループを参照する、新しい group 要素

を追加します。refID 属性には追加したいグループの id を設定します。

<tabs>

<tab id="WorkingWithDAML_Tab1" caption="演習 2A タブ">

<group refID="WorkingWithDAML_Group1"/> <group refID="WorkingWithDAML_Group2"/>

</tab> </tabs>

ID の指定は大文字・小文字を区別します。間違えないように注意しましょう。

コマンドを追加

DAML にはコマンドやメニュー、グループといったコアな要素があり、「Config.daml」ファ

イルに記述することで UI の追加や更新、削除ができます。コマンドのボタンやグループを自分

で作ることもできますが、ID を参照することで、別の既存のコマンドやグループを、新規ある

いは既存のタブに挿入するといったこともできます。

このステップでは、ステップ 2 で作成したアドイン内のグループに、ArcGIS Pro の既存の

コマンドを追加します。また、「演習 2A タブ」に別の既存コマンド グループを追加します。

 「Config.daml」ファイルを開き、「WorkingWithDAML_Group1」グループの group 要

(37)

33  「WorkingWithDAML_Group1」グループに、ArcGIS Pro の既存コマンドへの参照を追加

します。コードの例を参考にして、「host controls within groups」というコメントの書か

れた行の後にツールパレット、ボタン、ギャラリーの要素を追記しましょう。

refID 属性に下記の既存コマンドの ID を指定し追加します。

追加する既存コマンド 説明

esri_mapping_newMapPalette [新しいマップ] ツールパレット esri_core_saveProjectAsButton [名前を付けてプロジェクトを保存] ボタン

esri_mapping_bookmarksNavigateGallery [ブックマーク] ギャラリー esri_mapping_mapContextMenu_ExportMap [マップのエクスポート] ボタン

<group id="WorkingWithDAML_Group1" caption="演習 2A グループ 1"

appearsOnAddInTab="false"> <!-- host controls within groups -->

<!--Pro 既存コマンド-->

<toolPalette refID="esri_mapping_newMapPalette" />

<button refID="esri_core_saveProjectAsButton" />

<gallery refID="esri_mapping_bookmarksNavigateGallery" /> <button refID="esri_mapping_mapContextMenu_ExportMap" />

</group>

 「WorkingWithDAML_Group2」グループにも同様に、下記の既存コマンドの ID を指定

し追加します。

追加する既存コマンド 説明

esri_mapping_selectToolPalette [選択] ツールパレット esri_mapping_clearSelectionButton [選択解除] ボタン

esri_geoprocessing_selectByAttributeButton [属性検索] ボタン esri_geoprocessing_selectByLocationButton [空間検索] ボタン

<group id="WorkingWithDAML_Group2" caption="演習 2A グループ 2"

appearsOnAddInTab="false"> <!--host controls within groups -->

<!--Pro 既存コマンド-->

<toolPalette refID="esri_mapping_selectToolPalette" />

<button refID="esri_mapping_clearSelectionButton" />

<button refID="esri_geoprocessing_selectByAttributeButton" /> <button refID="esri_geoprocessing_selectByLocationButton" />

</group>

既存コマンドの ID は下記 URL のリファレンス ページを参照してください。 ArcGIS Pro DAML ID Reference

https://github.com/Esri/arcgis-pro-sdk/wiki/ArcGIS-Pro-DAML-ID-Reference

 次に、tab 要素内に既存のコマンド グループである [照会] グループの ID を追加します。

<tabs>

<tab id="WorkingWithDAML_Tab1" caption="演習 2A タブ">

(38)

34

<group refID="esri_mapping_inquiryGroup" />

</tab> </tabs>

動作のテスト

作成したアドインの動作をテストするために、デバッグ実行を行います。時前に、プロジェク トのデバッグ環境を確認しておきましょう。

 [ソリューション エクスプローラー] から [WorkingWithDAML] プロジェクトを右クリ

ックし、[プロパティ] を選択します。

 [デバッグ] タブを選択し、[外部プログラムの開始] がチェックされ、「<ArcGIS Pro イン

ストール フォルダー>\Pro\bin\ArcGISPro.exe」が参照されていることを確認します。

デバッグで使用するアプリケーションは、プロジェクト テンプレートによってあらかじめ定義さ れています。

 [プロパティ] のダイアログを閉じます。

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

 ビルドに問題がなければ、[デバッグ] メニュー から [デバッグ開始] を選択し、アドイン

を実行します。

しばらくすると、ArcGIS Pro が起動します。

 [Map.aptx] テンプレートを選択し、新規にプロジェクトを作成します。プロジェクト名と

保存場所は下記のように設定してください。

 名前 : CustomizeDAML

 場所 : C:\ProSdkStartupGuide\Projects

プロジェクトが開くと、「Config.daml」ファイルで作成した「演習 2A タブ」が作成されて

いるのがわかります。

 リボン インターフェイスに表示されている、「演習 2A タブ」を選択します。

タブ内に、「演習 2A グループ 1」と「演習 2A グループ 2」が作成されており、各グルー

(39)

35  ArcGIS Pro を閉じ、デバックを終了します。

ArcGIS Pro を終了すると、自動的にデバックが終了するようになっています。Visual Studio に戻

り、[デバッグ] メニューの [デバッグの停止] をクリックでもデバックは終了します。

マップ

タブの修正

ここまでのステップでは、insertModule 要素を使い、新規のタブやグループを作成し追加す

る方法を確認しました。このステップでは、updateModule 要素や updateGroup 要素を使用

して、ArcGIS Pro の既存のグループを変更し、コマンドを参照して追加や削除を行います。 updateModule 要素は、変更しようとしているモジュールを参照し、updateGroup 要素で既存

グループを参照します。

このステップでは、練習のため [マップ] タブの [ナビゲーション] グループから [ブックマ

ーク] ギャラリーを削除してみましょう。

 「Config.daml」ファイル で insertModule 要素の終了タグの後に、下記のように updateModule 要素を追加します。

追加する要素 説明

updateModule ArcGIS Pro 上の更新するモジュールを定義

updateGroup updateModule で指定されたタブ内の、 更新するグループを定義

deleteButton updateGroup で指定されたグループ内の、 削除するボタンを定義

追加する既存コマンド 説明

esri_mapping_navigateGroup [ナビゲーション] グループ esri_mapping_bookmarksNavigateGallery [ブックマーク] ギャラリー

(40)

36

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

 ビルドに問題がなければ、[デバッグ] メニューから [デバッグ開始] を選択し、アドイン

を実行します。

しばらくすると、ArcGIS Pro が起動します。

 [最近使用したプロジェクト] または [別のプロジェクトを開く] から、下記のプロジェク

トを開きます

・C:\ProSdkStartupGuide\Projects\CustomizeDAML\CustomizeDAML.aptx

 [ビュー] で [マップ] を選び、[マップ] タブの [ナビゲーション] グループから [ブック

マーク] ボタンがなくなっていることを確認します。

 ArcGIS Pro を上書き保存し閉じて、デバックを終了します。

 Visual Studio に戻ります。

コンディションとステートの作成

ArcGIS Pro SDK のフレームワークには、開発者によって定義された条件に基づいて、作成

したコマンドの有効化 / 無効化をトリガーするための、コンディションとステートというメカ

ニズムが組み込まれています。これによって、リボン、ドッキング ウィンドウ、ボタン、ツー ルといった様々な GUI 要素を、アプリケーション内でいつ使用可能にするかを決めることがで

きます。

「Config.daml」ファイルで、新規にコンディションとステートを定義します。

 「Config.daml」ファイルで modules 要素の前に、condition 要素を追加します。

<conditions>

<!-- 追加するコンディションの定義 -->

<insertCondition id="example_state_condition" caption="演習 2A">

<!--このステートによって、コンディションは true か false で設定されます。-->

<state id="example_state" /> </insertCondition>

</conditions>

(41)

37

コンディションは、条件によって有効/無効を切り替えたい GUI の要素に関連付けて使用

します。コンディションが、関連付けられた GUI 要素の有効/無効どちらをトリガーするか

は、コンディションが内包する 1 つ以上のステートが持つ true/false の値によって決まり

ます。

上記コード例では、example_condition という ID を持つコンディションを定義し、その

最終的な値は内包する example_state ステートによって決まります。example_state の定

義はこれから作成しますが、まずは以下の操作にて、アドインに example_state の値を制御

するボタンを追加します。

 [ソリューション エクスプローラー] から [WorkingWithDAML] プロジェクトを右クリ

ックし、[追加] → [新しい項目] を選択します。

 [新しい項目の追加] ダイアログから、[インストール済み] → [Visual C#] → [ArcGIS]

→ [ArcGIS Pro Add-ins] を選択し、[ArcGIS Pro ボタン] テンプレートを選択します。

ArcGIS Pro SDK for .NET テンプレートの説明は、第 3 章で説明します。

 名前を「ToggleStateButton.cs」に変更し、[追加] をクリックします。

プロジェクトに「ToggleStateButton.cs」ファイルが追加されます。DAML 定義では、 insertModule 要素配下の controls 要素に「ToggleStateButton」ボタン要素が追加されます。

また、groups 要素内の最初のグループにも「ToggleStateButton」ボタンへの参照が自動的に

追加されています。

(42)

38

タンの caption を「表示切替」に変更します。

controls 内に新規ボタンが作成されていない場合は、「Config.daml」ファイルを一度閉じて再度

開いてください。

<controls>

<!-- add your controls here -->

<button id="WorkingWithDAML_ToggleStateButton"

caption="表示切替" className="ToggleStateButton" ・・・>

 「演習 2A グループ 1」の group 要素に移動し、自動的に追加された ToggleStateButton への参照を削除します。

<group id="WorkingWithDAML_Group1" caption="演習 2A グループ 1"

appearsOnAddInTab="false"> <!-- host controls within groups -->

<toolPalette refID="esri_mapping_newMapPalette" /> <button refID="esri_core_saveProjectAsButton" />

<gallery refID="esri_mapping_bookmarksNavigateGallery" /> <button refID="esri_mapping_mapContextMenu_ExportMap" /> <!--この↓コードをコメントアウト -->

<button refID="WorkingWithDAML_ToggleStateButton" size="large" /> </group>

次は、「ToggleStateButton」ボタンがクリックされた際にステートの値を更新する処理を記

述します。

 「ToggleStateButton.cs」ファイルを右クリックし、[コードの表示] を選択し、ボタンの

クリック時に example_state ステートの有効/無効を切り替えるコードを追加します。

internal class ToggleStateButton : Button {

// 切り替える対象のステート ID を定数定義

public const string MyStateID = "example_state";

//ボタンのクリック イベントが起こったときの動作を定義

//表示の切り替えを Deactivate と Activate で指定

protected override void OnClick() { if (FrameworkApplication.State.Contains(MyStateID)) { FrameworkApplication.State.Deactivate(MyStateID); } else { FrameworkApplication.State.Activate(MyStateID); } } }

ステートを切り替えるコードの記述は以上です。

(43)

39  「Config.daml」ファイルを開きます。

 ステップ 5 で作成した 「Config.daml」ファイルの updateGroup 要素に、作成したボ

タンを [ナビゲーション] グループに挿入するよう、下記の記述を追加します。

<updateGroup refID="esri_mapping_navigateGroup">

<deleteButton refID="esri_mapping_bookmarksNavigateGallery"/> <insertButton refID="WorkingWithDAML_ToggleStateButton"/> </updateGroup>

ボタンの ID は長くてタイプするのが大変です。同じ DAML 上に追加されているボタンの定義か

らコピー & ペーストで貼り付けましょう。

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

ここまでの手順で、コンディションおよびステートの定義、ボタンによるステートの更新まで ができました。

コンディションとステートを使用した表示の切り替え

こ のス テッ プで は、[演 習 2A タ ブ] タブ の 表 示状態 を、 ステ ップ 6 で作成 した example_state_condition コンディションで制御するための設定を行います。

 「Config.daml」ファイルで tab 要素に移動し、condition 属性を追加します。

<tabs>

<tab id="WorkingWithDAML_Tab1" caption="演習 2A タブ"

condition="example_state_condition">

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

 ビルドに問題がなければ、[デバッグ] メニューから [デバッグ開始] を選択してアドイン

を実行します。

しばらくすると、ArcGIS Pro が起動します。

 [最近使用したプロジェクト] から、「CustomizeDAML.aprx」プロジェクトを開きます。

 [マップ] タブ内の [ナビゲーション] グループに、[表示切替] ボタンが追加されているこ

とと、[演習 2A タブ] がリボン上に表示されていないことを確認しクリックします。

クリックをすると、[演習 2A タブ] が有効化され、リボン上に表示されます。再度、[表示切

(44)

40

 ArcGIS Pro を閉じます

Visual Studio のデバック実行が終了します。

 Visual Studio で [ファイル] メニュー → [すべて保存] をクリックします。

 Visual Studio を終了します。

演習のまとめ

この演習では、insertModule 要素を使用し、新規のタブやグループを作成し追加する方法や、 updateModule や updateGroup 要素を使用し、ArcGIS Pro の既存のグループを変更し、コ

マンドを参照して追加や削除する方法、ボタンのクリックという 1 つのステートの条件をもと

にタブの表示を切り替えました。複数のステートを “and” や “or” といった要素を使い組み合

(45)

41

解答コード

Config.daml

...

<conditions>

<!-- 追加するコンディションの定義 -->

<insertCondition id="example_state_condition" caption="演習 2A">

<!--このステートによって、コンディションは true false で設定されます。-->

<state id="example_state" /> </insertCondition>

</conditions>

<modules>

<insertModule id="WorkingWithDAML_Module"

className="Module1" autoLoad="false" caption="Module1"> <tabs>

<tab id="WorkingWithDAML_Tab1" caption="演習 2A タブ"

condition="example_state_condition"> <group refID="WorkingWithDAML_Group1" />

<group refID="WorkingWithDAML_Group2" /> <group refID="esri_mapping_inquiryGroup" /> </tab>

</tabs> <groups>

<group id="WorkingWithDAML_Group1"

caption="演習 2A グループ 1" appearsOnAddInTab="false">

<!--Pro の既存コマンド-->

<toolPalette refID="esri_mapping_newMapPalette" />

<button refID="esri_core_saveProjectAsButton" />

<gallery refID="esri_mapping_bookmarksNavigateGallery" /> <button refID="esri_mapping_mapContextMenu_ExportMap" />

<!--このコードをコメントアウト -->

<!--<button refID="working_with_DAML_ToggleStateButton"

size="large" />-->

</group>

<group id="WorkingWithDAML_Group2"

caption="演習 2A グループ 2" appearsOnAddInTab="false">

<!--Pro の既存コマンド-->

<toolPalette refID="esri_mapping_selectToolPalette" />

<button refID="esri_mapping_clearSelectionButton" />

<button refID="esri_geoprocessing_selectByAttributeButton" /> <button refID="esri_geoprocessing_selectByLocationButton" />

</group> </groups> <controls>

<button id="working_with_DAML_ToggleStateButton" caption="表示切替" className="ToggleStateButton"

loadOnClick="true" smallImage="Images¥GenericButtonBlue16.png" largeImage="Images¥GenericButtonBlue32.png">

<tooltip heading="Tooltip Heading">Tooltip text

<disabledText /></tooltip> </button> </controls> </insertModule> <updateModule refID="esri_mapping"> <groups> <updateGroup refID="esri_mapping_navigateGroup">

<deleteButton refID="esri_mapping_bookmarksNavigateGallery" /> <insertButton refID="WorkingWithDAML_ToggleStateButton"/> </updateGroup>

</groups> </updateModule>

(46)

42

</ArcGIS>

ToogleStateButton.cs

internal class ToggleStateButton : Button {

// 切り替える対象のステート ID を定数定義

public const string MyStateID = "example_state";

//ボタンのクリックイベントが起こったときの動作を定義

//表示の切り替えを Deactivate Activate で指定

protected override void OnClick() {

if (FrameworkApplication.State.Contains(MyStateID))

{

FrameworkApplication.State.Deactivate(MyStateID); }

else {

FrameworkApplication.State.Activate(MyStateID); }

(47)
(48)

44

演習

2B:

フック

アドイン

コマンドの作成

この演習では、ArcGIS Pro の既存コマンドを取得し、その既存コマンドを新規に作成したボ

タンに参照させます。

演習時間: 20 分

演習のポイント :

フック アドイン コマンドの使用

GetPulgInWrapper で既存のコマンド ID を取得 新しいボタンに既存のコマンドを参照

リボンの作成

 Visual studio 2015 を起動します。

 [ファイル] メニュー → [新規作成] → [プロジェクト] をクリックします。

 [新しいプロジェクト] ダイアログから、[インストール済み] → [テンプレート] → [Visual C#] → [ArcGIS] → [ArcGIS Pro Add-ins] を選択し、[ArcGIS Pro モジュール

アドイン] テンプレートを選択します。

 下記の項目を設定し [OK] ボタンをクリックしプロジェクトを新規に作成します。

 .NET Framework のバージョン : .NET Framework 4.6.1  名前 : HookProCommands

 場所 : C:\ProSdkStartupGuide\ProAddins\  ソリューションのディレクトリを作成 : チェックを外す

 [ソリューション エクスプローラー] から「HookProCommands」プロジェクトを右クリ

ックし、[ArcGIS Pro の DAML ID を生成] をクリックします。

Daml.cs が作成されました。

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

 「Config.daml」ファイルを開き、insertModule 要素配下の group 要素へ移動し、キャ

プションと appearsOnAddInTab の値を下記のように変更します。

(49)

45

<group id=”HookProCommands_Group1” caption=”演習 2B グループ

appearsOnAddInTab=”false”>

次に、tabs 要素内に新規のタブを作成し、その中に [演習 2B グループ] グループへの参照

を追加します。

 tabs 要素に移動します。

 tab 要素のコメント化を解除し、caption 属性を「演習 2B タブ」に変更します。グルー

プへの参照は、テンプレートに既に記載されています。

 caption : 演習 2B タブ

<tabs>

<tab id=”HookProCommands_Tab1” caption=”演習 2B タブ”>

<group refID=”HookProCommands_Group1”/> </tab>

</tabs>

フック

アドイン

ボタンの作成

次に、ボタンを 2 つ作成します。

 [ソリューション エクスプローラー] の HookProCommands プロジェクトを右クリック

し、[追加] → [新しい項目] をクリックします。

 [新しい項目の追加] ダイアログから、[インストール済み] → [Visual C#] → [ArcGIS]

→ [ArcGIS Pro Add-ins] を選択し、[ArcGIS Pro ボタン] テンプレートを選択します。

 名前を「MyAddBookmarks.cs」に変更し、[追加] をクリックします。

「Config.daml」ファイル内の controls 内に、新規のボタンが作成されます。

 もう一度、[ソリューション エクスプローラー] の HookProCommands プロジェクトを

右クリックし、[追加] → [新しい項目] をクリックします。

 [新しい項目の追加] ダイアログから、[インストール済み] → [Visual C#] → [ArcGIS]

→ [ArcGIS Pro Add-ins] を選択し、[ArcGIS Pro ボタン] テンプレートを選択します。

 名前を「MyCloseArcGISPro.cs」に変更し、[追加] をクリックします。

「Config.daml」ファイル内の controls 内に、新規に 2 つ目のボタンが作成されます。

 「Config.daml」ファイルを開き、controls 内に新たに追加された 2 つのボタンが作成さ

れているかを確認します。

(50)

46

MyAddBookmarksButton

 caption : ブックマーク 追加

 tooltip heading : ブックマークを追加するボタンです。 MyCloseArcGISPro

 caption : ArcGIS Pro 終了

 tooltip heading : ArcGIS Pro を閉じるボタンです。

<controls>

<!-- add your controls here -->

<button id="HookProCommands_MyAddBookmarks"

caption="ブックマーク 追加" className="MyAddBookmarks"

loadOnClick="true" smallImage="Images¥GenericButtonBlue16.png" largeImage="Images¥GenericButtonBlue32.png">

<tooltip heading="ブックマークを追加するボタンです。">Tooltip

text<disabledText /></tooltip> </button>

<button id="HookProCommands_MyCloseArcGISPro"

caption="ArcGIS Pro 終了" className="MyCloseArcGISPro"

loadOnClick="true" smallImage="Images¥GenericButtonBlue16.png" largeImage="Images¥GenericButtonBlue32.png">

<tooltip heading="ArcGIS Pro を閉じるボタンです。">Tooltip

text<disabledText /></tooltip> </button>

</controls>

次に、作成したボタンにコードを記述します。

 「MyAddBookmarks.cs」ファイルを開きます。

ArcGIS Pro ボタンのテンプレートで追加したクラスは ArcGIS.Desktop.Framework. Contracts.Button 抽象クラスを継承しており、クラス内には OnClick イベント ハンドラーを

オーバーライドしたメソッドが用意されています。OnClick() メソッド内に、ボタンがクリック

された際に実行するコードを記述します。

ここでは ArcGIS Pro に元々存在する [新しいブックマーク] ボタンと同じ動きをさせたい

ため、ブックマークを追加するコードを自分で書く代わりに [新しいブックマーク] ボタンへの

参照を取得し、実行することにします。既存コマンドへの参照は、FrameworkApplication ク

ラスの GetPlugInWrapper() 静的メソッドに、コマンドの ID を渡すことで取得できます。

OnClick() メソッド内に、[ブックマーク 追加] ボタンのクリックした際の動作を定義するコ

ードを記述します。

 OnClick() メソッド内に、既存コマンドの [新しいブックマーク] ボタン の ID を追加し

ます。

protected override void OnClick() {

// GetPlugInWrapper で既存の ID を取得

IPlugInWrapper createBM = FrameworkApplication.

GetPlugInWrapper(DAML.Button.esri_mapping_createBookmark);

(51)

47

先の手順で Daml.cs ファイルを作成しておいたので、既存ボタンのコマンド ID を間違えやすい

文字列ではなく、DAML.Button.esri_mapping_createBookmark という文字定数で(Visual Studio の入力支援機能を利用して)入力できるようになっています。

GetPlugInWrapper() 戻り値の型は、IPlugInWrapper インターフェイスです。このインタ

ーフェイスを通して、DAML で定義されたリボン上のコントロールの定義(キャプションやア

イコンなど)にアクセスできますが、コマンドを実行させるためには Execute() コマンドを実

装した System.Windows.Input.ICommand インターフェイスにキャストする必要がありま

す。

 ファイルの先頭(using 句の最後)に、ICommand を使うため System.Windows.Input

を追加します。

using ArcGIS.Desktop.Framework;

using ArcGIS.Desktop.Framework.Contracts;

using System.Windows.Input;

 取得したコマンドへの参照を ICommand にキャストし、実行可能な場合にのみコマンド

を起動するコードを記述します。

protected override void OnClick() {

// GetPlugInWrapper で既存の ID を取得

IPlugInWrapper createBM = FrameworkApplication.

GetPlugInWrapper(DAML.Button.esri_core_exitAplicationButton); // ICommand インターフェイスにキャスト

ICommand commandId = (ICommand)createBM;

if (commandId != null) {

// コマンドが実行可能かどうか判定

if (commandId.CanExecute(null)) {

// コマンド起動

commandId.Execute(null); }

}

}

ブックマークを追加するボタンの実装は以上です。

次は、クリックすると ArcGIS Pro アプリケーションを終了するボタンを実装します。こち

らも、既存の [ArcGIS Pro 終了] ボタンを参照して実行することにします。

 「MyCloseArcGISPro.cs」ファイルを開きます。

 ICommand を使うため、using 句に System.Windows.Input を追加します。

using ArcGIS.Desktop.Framework;

using ArcGIS.Desktop.Framework.Contracts;

(52)

48

 OnClick() メソッド内に、既存コマンドの [ArcGIS Pro 終了] ボタンの参照を取得し、実

行するコードを記述します。コード参照するコマンドの ID や、ローカルの変数名以外は、

先ほどのブックマークを追加するボタンとまったく同じコードになります。

protected override void OnClick() {

// GetPlugInWrapper で既存コマンドへの参照を取得

IPlugInWrapper exitApp = FrameworkApplication.

GetPlugInWrapper(DAML.Button.esri_core_exitApplicationButton);

// ICommand インターフェイスにキャスト

ICommand exitAppCmd = (ICommand)exitApp;

if (exitAppCmd != null) {

// コマンドが実行可能かどうか判定

if (exitAppCmd.CanExecute(null)) {

// コマンド起動

exitAppCmd.Execute(null); }

}

}

これで、ArcGIS Pro の既存機能を再利用する 2 つのボタンの実装ができました。動作を確

認してみましょう。

 [ビルド] メニューから [ソリューションのビルド] を選択し、プロジェクトをビルドしま

す。

 ビルドに問題がなければ、[デバッグ] メニューから [デバッグ開始] を選択し、アドイン

を実行します。

しばらくすると、ArcGIS Pro が起動します。

 [最近使用したプロジェクト] から、演習 2A で作成した CustomizeDAML.aptx プロジェ

クトを開きます。

 [演習 2B タブ] が追加されていることを確認し、選択します。

[演習 2B グループ] に、[ブックマーク 追加] と [ArcGIS Pro 終了] ボタンが追加されて

います。

(53)

49  マップを日本列島の範囲に拡大します。

 [ブックマーク 追加] ボタンをクリックします。

[ブックマークの作成] ダイアログが表示され、新規にブックマークが作成できます。

 [ブックマーク名] を「日本」に変更し、[OK] をクリックします。

 [マップ] タブの [全体表示] ボタンをクリックします。

 [表示切替] ボタンをクリックします。

非表示になっていた [演習 2A タブ] がリボン上に表示されます。

 表示された [演習 2A タブ] を選択し、[ブックマーク] ボタンをクリックし、 [Map ブッ

クマーク] 内に、作成したブックマークの「日本」が追加されていることを確認しクリック

(54)

50

ブックマーク作成時のマップ範囲 (日本列島の範囲) に拡大されます。

 [演習 2B タブ] に戻り、[ArcGIS Pro 閉じる] ボタンをクリックします。

[ArcGIS プロジェクト] ダイアログが表示されます。

 [はい] を選択します。

ArcGIS Pro が終了します。

 Visual Studio で [ファイル] メニューの [すべてを保存] をクリックし、Visual Studio

(55)

51

ArcGIS Pro

のアドインのアンインストール

インストールしたアドインは、簡単にアンインストールすることができます。ここでは、演習 でインストールされたアドインをアンインストールします。

 ArcGIS Pro を開きます。

 ArcGIS Pro の起動後、[最近使用したプロジェクト] から、CustomizeDAML.aprx プロジ

ェクトを開きます。

 [プロジェクト] タブを選択します。

 [プロジェクト] タブ内の [アドイン マネージャー] を選択します。

 [マイ アドイン] から、「WorkingWithDAML」と「HookProCommands」を [このアドイ

ンを削除] をクリックし削除します。

 ArcGIS Pro を閉じます。

アドインの追加および削除を有効にするには、アプリケーションの再起動が必要です。

これで ArcGIS Pro を立ち上げても、これまでの演習で追加したアドイン(演習 2A タブや

(56)

52

演習のまとめ

この演習では、フックアドイン コマンドを使用し、新規に作成したボタンに ArcGIS Pro の

既存コマンドを参照しました。また、追加したアドインのインストールもしました。

(57)

53

解答コード

Config.daml

...

<modules>

<insertModule id="HookProCommands_Module" className="Module1"

autoLoad="false" caption="Module1"> <!-- uncomment to have the control hosted on a separate tab--> <tabs>

<tab id="HookProCommands_Tab1" caption="演習 2B タブ">

<group refID="HookProCommands_Group1" /> </tab>

</tabs> <groups>

<group id="HookProCommands_Group1" caption="演習 2B グループ"

appearsOnAddInTab="false"> <!-- host controls within groups -->

<button refID="HookProCommands_MyAddBookmarks" size="large" /> <button refID="HookProCommands_MyCloseArcGISPro"

size="large" /> </group>

</groups> <controls>

<!-- add your controls here -->

<button id="HookProCommands_MyAddBookmarks"

caption="ブックマーク 追加" className="MyAddBookmarks"

loadOnClick="true" smallImage="Images¥GenericButtonBlue16.png" largeImage="Images¥GenericButtonBlue32.png">

<tooltip heading="ブックマークを追加するボタンです。">

Tooltip text<disabledText /></tooltip> </button>

<button id="HookProCommands_MyCloseArcGISPro"

caption="ArcGIS Pro 終了" className="MyCloseArcGISPro"

loadOnClick="true" smallImage="Images¥GenericButtonBlue16.png" largeImage="Images¥GenericButtonBlue32.png">

<tooltip heading="ArcGIS Pro を閉じるボタンです。">

Tooltip text<disabledText /></tooltip> </button> </controls> </insertModule> </modules> </ArcGIS> MyAddBookmarks.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ArcGIS.Desktop.Framework; using ArcGIS.Desktop.Framework.Contracts; using System.Windows.Input;

internal class MyAddBookmarks : Button {

protected override void OnClick() {

// GetPlugInWrapper で既存の ID を取得

IPlugInWrapper createBM = FrameworkApplication.

参照

関連したドキュメント

Generative Design for Revit は、Generative Design を実現するために Revit 2021 から搭 載された機能です。このエンジンは、Dynamo for

※ 硬化時 間につ いては 使用材 料によ って異 なるの で使用 材料の 特性を 十分熟 知する こと

クチャになった.各NFは複数のNF  ServiceのAPI を提供しNFの処理を行う.UDM(Unified  Data  Management) *11 を例にとれば,UDMがNF  Service

日林誌では、内閣府や学術会議の掲げるオープンサイエンスの推進に資するため、日林誌の論 文 PDF を公開している J-STAGE

画像の参照時に ACDSee Pro によってファイルがカタログ化され、ファイル プロパティと メタデータが自動的に ACDSee

Windows Hell は、指紋または顔認証を使って Windows 10 デバイスにアクセスできる、よ

注)○のあるものを使用すること。

従来から iOS(iPhone など)はアプリケーションでの電話 API(Application Program